উদাহরণ সহ WebClient এবং Security ব্যবহার

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) WebClient এবং Security Integration |
76
76

Spring Boot এর WebClient হল একটি আধুনিক, নন-ব্লকিং HTTP ক্লায়েন্ট, যা Spring Security এর সাথে ইন্টিগ্রেট করে নিরাপদ HTTP রিকোয়েস্ট প্রেরণ করতে ব্যবহৃত হয়। WebClient ব্যবহার করে আমরা বিভিন্ন ধরনের Authentication এবং Authorization মেকানিজম সহজেই ইমপ্লিমেন্ট করতে পারি।


WebClient এর সাথে Security ব্যবহার করার পদ্ধতি

১. সাধারণ Authentication (Basic Auth)

WebClient এর মাধ্যমে একটি বেসিক অ্যান্থেন্টিকেশন হেডার যুক্ত করা যায়।

import org.springframework.web.reactive.function.client.WebClient;

public class BasicAuthExample {
    public static void main(String[] args) {
        WebClient webClient = WebClient.builder()
                .baseUrl("https://example.com")
                .defaultHeaders(headers -> headers.setBasicAuth("username", "password")) // Basic Auth
                .build();

        String response = webClient.get()
                .uri("/secure-endpoint")
                .retrieve()
                .bodyToMono(String.class)
                .block(); // Blocking for simplicity

        System.out.println("Response: " + response);
    }
}

২. Bearer Token Authentication

Bearer Token ব্যবহারের মাধ্যমে API-তে Authorization হেডার যোগ করা হয়।

import org.springframework.web.reactive.function.client.WebClient;

public class BearerTokenExample {
    public static void main(String[] args) {
        WebClient webClient = WebClient.builder()
                .baseUrl("https://example.com")
                .defaultHeader("Authorization", "Bearer your-access-token") // Bearer Token
                .build();

        String response = webClient.get()
                .uri("/secure-endpoint")
                .retrieve()
                .bodyToMono(String.class)
                .block(); // Blocking for simplicity

        System.out.println("Response: " + response);
    }
}

৩. OAuth2 Authentication (Spring Security Integration)

Spring Boot এবং Spring Security ব্যবহার করে WebClient এর মাধ্যমে OAuth2 ব্যবহার করা যায়।

ডিপেন্ডেন্সি যুক্ত করুন
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
Application.properties ফাইল কনফিগার করুন
spring.security.oauth2.client.registration.myclient.client-id=my-client-id
spring.security.oauth2.client.registration.myclient.client-secret=my-client-secret
spring.security.oauth2.client.registration.myclient.authorization-grant-type=client_credentials
spring.security.oauth2.client.provider.myprovider.token-uri=https://example.com/oauth/token
WebClient Bean তৈরি করুন
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient webClient(OAuth2AuthorizedClientService authorizedClientService) {
        ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2Filter =
                new ServerOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientService);

        return WebClient.builder()
                .apply(oauth2Filter.oauth2Configuration())
                .baseUrl("https://example.com")
                .build();
    }
}
OAuth2 রিকোয়েস্ট প্রেরণ করুন
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class SecureService {
    private final WebClient webClient;

    public SecureService(WebClient webClient) {
        this.webClient = webClient;
    }

    public String fetchSecureData() {
        return webClient.get()
                .uri("/secure-endpoint")
                .retrieve()
                .bodyToMono(String.class)
                .block(); // Blocking for simplicity
    }
}

WebClient এর মাধ্যমে Security সহ POST রিকোয়েস্ট

JSON Payload সহ POST রিকোয়েস্ট

import org.springframework.web.reactive.function.client.WebClient;

import java.util.HashMap;
import java.util.Map;

public class PostRequestExample {
    public static void main(String[] args) {
        WebClient webClient = WebClient.builder()
                .baseUrl("https://example.com")
                .defaultHeader("Authorization", "Bearer your-access-token")
                .build();

        Map<String, String> payload = new HashMap<>();
        payload.put("key1", "value1");
        payload.put("key2", "value2");

        String response = webClient.post()
                .uri("/secure-endpoint")
                .bodyValue(payload) // JSON Payload
                .retrieve()
                .bodyToMono(String.class)
                .block();

        System.out.println("Response: " + response);
    }
}

Spring Security-Enabled WebClient (Global Configuration)

Spring Security ব্যবহার করে WebClient এর জন্য গ্লোবাল সিকিউরিটি কনফিগারেশন করা যায়।

SecurityConfig ক্লাস:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
@EnableWebFluxSecurity
public class SecurityConfig {

    @Bean
    public WebClient secureWebClient(OAuth2AuthorizedClientManager clientManager) {
        ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2Filter =
                new ServerOAuth2AuthorizedClientExchangeFilterFunction(clientManager);

        return WebClient.builder()
                .apply(oauth2Filter.oauth2Configuration())
                .baseUrl("https://example.com")
                .build();
    }
}

WebClient এর সাথে Security ব্যবহারের সুবিধা

  1. নিরাপদ ডেটা ট্রান্সমিশন:
    Basic Auth, Bearer Token, এবং OAuth2 সাপোর্ট করে।
  2. সহজ কাস্টমাইজেশন:
    ডিফল্ট হেডার, হেডার ইন্ট্রাসেপটর, এবং টাইমআউট সহজেই কনফিগার করা যায়।
  3. রিঅ্যাকটিভ এবং স্কেলেবল:
    নন-ব্লকিং প্রক্রিয়ার কারণে উচ্চ কার্যক্ষমতা প্রদান করে।
  4. Spring Security Integration:
    OAuth2 এবং অন্যান্য সিকিউরিটি মেকানিজমের সরাসরি সাপোর্ট।

উপসংহার

Spring Boot এর WebClient ব্যবহার করে সহজেই নিরাপদ HTTP রিকোয়েস্ট পাঠানো সম্ভব। Basic Authentication, Bearer Token, এবং OAuth2 ইন্টিগ্রেশন Spring Security-এর মাধ্যমে কার্যকরভাবে পরিচালিত হয়। প্রয়োজনে নির্দিষ্ট কোনো কনফিগারেশন বা উদাহরণ নিয়ে আরও আলোচনা করতে পারেন।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion